
#ifndef SEMANTICS_NAMESPACE_H

#define SEMANTICS_NAMESPACE_H

#include "generic_table.h"
#include "syntax_tree.h"
#include "semantics_class.h"
#include "semantics_field.h"
#include "semantics_method.h"
#include "semantics_property.h"
#include "semantics_enum.h"
#include "semantics_model.h"
#include "semantics_simulation.h"



/*
	Container for namespace elements.
*/
class SemanticsNamespace
{
public:
	SemanticsNamespace();
	~SemanticsNamespace();


	// Containing elements
	GenericTable<int> * Name;

	int CurrentContext;

	GenericTable<SemanticsNamespace> * Namespaces;
	GenericTable<SemanticsClass> * Classes;
	GenericTable<SemanticsField> * Fields;
	GenericTable<SemanticsProperty> * Properties;
	GenericTable<SemanticsEnum> * Enums;
	GenericTable<SemanticsMethod> * Methods;
	GenericTable<SemanticsModel> * Models;
	GenericTable<SemanticsSimulation> * Simulations;

#ifdef DEBUG
	void DebugXMLOutput(FILE * fo);
#endif

};

#endif
